#!/usr/bin/python3
import os

import xlwings as xw

# source_file = 'D:/tmp/example.xlsx'
# target_file = 'D:/tmp/target.xlsx'
# head_row = 1  # 标题所占行数，标题不会重复复制
# repeat_row = 4  # 数据行复制行数


def repeat_line(source_file, target_file, head_row, repeat_row):
    # 检查目标文件是否存在，如果不存在则创建一个新的 Excel 文件
    if not os.path.exists(target_file):
        target_book = xw.Book()
        target_book.save(target_file)
        target_book.close()

    # 打开源文件和目标文件
    source_book = xw.Book(source_file)
    target_book = xw.Book(target_file)

    # 获取源文件和目标文件的第一个工作表
    source_sheet = source_book.sheets[0]
    target_sheet = target_book.sheets[0]

    # 获取源文件的行数
    last_row = source_sheet.range('A' + str(source_sheet.cells.last_cell.row)).end('up').row
    print(f'数据总行数：{last_row}')

    current_write_row = 1
    # 从第二行开始读取数据
    for row in range(1, last_row + 1):
        print(f'开始复制第{row}行')
        # 读取整行数据
        data = source_sheet.range(f'A{row}').expand('right').value

        repeat_count = 1
        # 如果是标题则只处理一次，否则复制多行
        if row > head_row:
            repeat_count = repeat_row
        # 将数据写入目标文件的下一行
        for write_index in range(repeat_count):
            target_sheet.range(f'A{current_write_row}').value = data
            current_write_row = current_write_row + 1

    # 保存并关闭文件
    source_book.close()
    target_book.save()
    target_book.close()
